var store='';

Ext.onReady(function(){
//Render menu

	function addNews(){
		var dt = new Date();

        // Окно для добавления новости
		var form = new Ext.form.FormPanel({
        baseCls: 'x-plain',
        labelWidth: 135,
        url:'save-form.php',
        defaultType: 'textfield',
        items: [{
            fieldLabel: 'Название новости',
            name: 'title',
            anchor:'100%'  // anchor width by percentage
        },{
            fieldLabel: 'Категория',
            name: 'category',
            anchor:'100%'  // anchor width by percentage
        },new Ext.form.DateField({
                fieldLabel: 'Дата создания',
                name: 'date',
                value: dt.format('m/d/Y')
        }),{    
            fieldLabel: 'Активна',
            xtype: 'checkbox',
            name: 'act',
            checked: true

        },{
            fieldLabel: 'Анонс',
            xtype:'htmleditor',
            name: 'anons',
            height: 100,
            value: '',
            anchor: '100%'  // anchor width by percentage
        },{
            fieldLabel: 'Текст',
            xtype:'htmleditor',
            name: 'text',
            height: 200,
            value: '',
            anchor: '100%'  // anchor width by percentage
        }]
    });

    var window = new Ext.Window({
        title: 'Добавить новость',
        width: 680,
        height:485,
        minWidth: 300,
        minHeight: 200,
        y:(navigator.userAgent.indexOf('Firefox')!=-1?(scrollY+110):(document.body.scrollTop+110)),
        layout: 'fit',
        plain:true,
        bodyStyle:'padding:5px;',
        buttonAlign:'center',
        items: form,

        buttons: [{
            text: 'Добавить',
            handler  : function(){
                    form.getForm().submit({
                      	url:'ajax/addnew.php',
                      	waitMsg:'Новость добавляется...',
						waitTitle:'Сохранение',
						success :function(){
							window.hide();
 					  		store.reload();
						}
					});
            }
        },{
            text: 'Отмена',
            handler  : function(){
                        window.hide();
            }
        }]
    });
    window.show();
}

// Функция возврата в главное меню
	function mainMenu(){
		javascript:location.href='../../';
	}

// Кнопка для выхода в главное меню
   new Ext.Button({
       text: 'В главное меню',
       handler: mainMenu,
       style: 'display:inline',
       iconCls:'back'
    }).render(document.body, 'buttons');


// Кнопка для добавления новости
    new Ext.Button({
        text: 'Добавить новость',
        style: 'display:inline; margin-left:10px;',
        handler: addNews,
        iconCls:'addnews'
    }).render(document.body, 'buttons');



//Render table
    // create the Data Store
    store = new Ext.data.JsonStore({
        root: 'topics',
        totalProperty: 'totalCount',
        idProperty: 'id',
        remoteSort: true,

        fields: [
            'title','id',
            {name: 'date', mapping: 'date', type: 'date', dateFormat: 'timestamp'},
            'text'
        ],

        // load using script tags for cross domain, if the data in on the same domain as
        // this page, an HttpProxy would be better
        proxy: new Ext.data.ScriptTagProxy({
            url: 'ajax/getlist.php'
        })
    });
    store.setDefaultSort('date', 'asc');


    // pluggable renders
    function renderTopic(value, p, record){
        return String.format(
                '<b><a href="#{1}" target="_blank">{0}</a></b>',
                value, record.id);
    }
    function renderLast(value, p, r){
        return value.dateFormat('M j, Y');
    }
    function renderActions(value, p, record){
        return String.format(
                '<div class="x-btnpan"><a href="javascript:editnews({0});" class="editnews"></a><a href="javascript:alert(\'Данная функция ещё не реализована\');" class="movenews"></a><a href="javascript:delnews({0});" class="delnews"></a></div>',
                value);
    }

    var pagingBar = new Ext.PagingToolbar({
        pageSize: 25,
        store: store,
        displayInfo: true,
        displayMsg: 'Отображение новостей {0} - {1} из {2}',
        emptyMsg: "Нет новостей",
        
        items:[
            '-', {
            pressed: true,
            enableToggle:true,
            text: 'Показывать анонс',
            ///cls: 'x-btn-text-icon details',
            toggleHandler: function(btn, pressed){
                var view = grid.getView();
                view.showPreview = pressed;
                view.refresh();
            }
        }]
    });

    var grid = new Ext.grid.GridPanel({
        el:'topic-grid',
        width:696,
        height:500,
        title: newsboxname,
        store: store,
        trackMouseOver:false,
        disableSelection:true,
        loadMask: true,

        // grid columns
        columns:[{
            id: 'topic', // id assigned so we can apply custom css (e.g. .x-grid-col-topic b { color:#333 })
            header: "Тема",
            dataIndex: 'title',
            width: 534,
            renderer: renderTopic,
            sortable: true
        },{
            id: 'date',
            header: "Дата",
            dataIndex: 'date',
            width: 80,
            renderer: renderLast,
            sortable: true
        },{
            id: 'actions',
            header: "Действия",
            dataIndex: 'id',
            width: 80,
            renderer: renderActions,
            sortable: true
        }],

        // customize view config
        viewConfig: {
            forceFit:true,
            enableRowBody:true,
            showPreview:true,
            getRowClass : function(record, rowIndex, p, store){
                if(this.showPreview){
                    p.body = '<p>'+record.data.text+'</p>';
                    return 'x-grid3-row-expanded';
                }
                return 'x-grid3-row-collapsed';
            }
        },

        // paging bar on the bottom
        bbar: pagingBar
    });

    // render it
    grid.render();

    // trigger the data store load
    store.load({params:{start:0, limit:25}});
});



Ext.ux.SliderTip = Ext.extend(Ext.Tip, {
    minWidth: 10,
    offsets : [0, -10],
    init : function(slider){
        slider.on('dragstart', this.onSlide, this);
        slider.on('drag', this.onSlide, this);
        slider.on('dragend', this.hide, this);
        slider.on('destroy', this.destroy, this);
    },

    onSlide : function(slider){
        this.show();
        this.body.update(this.getText(slider));
        this.doAutoWidth();
        this.el.alignTo(slider.thumb, 'b-t?', this.offsets);
    },

    getText : function(slider){
        return slider.getValue();
    }
});



/**
 * Выводит окно для редактирования новостей
 *
 */
 
function editnews(id) {

		  	// Окно для редактирования новости
			var form = new Ext.form.FormPanel({
		        baseCls: 'x-plain',
		        labelWidth: 135,
		        url:'save-form.php',
		        defaultType: 'textfield',
		        items: [{
		        	fieldLabel: 'id',
		        	hideLabel: true,
		        	hidden: true,
					name: 'id',
		            value: id,
		            anchor:'100%'
		        },{
		        	fieldLabel: 'Название новости',
		            name: 'title',
		            anchor:'100%'  // anchor width by percentage
		        },{
		            fieldLabel: 'Категория',
		            name: 'category',
		            anchor:'100%'  // anchor width by percentage
		        },new Ext.form.DateField({
		                fieldLabel: 'Дата создания',
		                name: 'date',
		                value: ''
		        }),{    
		            fieldLabel: 'Активна',
		            xtype: 'checkbox',
		            name: 'act',
		            checked: true
		
		        },{
		            fieldLabel: 'Анонс',
		            xtype:'htmleditor',
		            name: 'anons',
		            height: 100,
		            anchor: '100%'  // anchor width by percentage
		        },{
		            fieldLabel: 'Текст',
		            xtype:'htmleditor',
		            name: 'text',
		            height: 200,
		            anchor: '100%'  // anchor width by percentage
		        }]
		    });
		
		    var window = new Ext.Window({
		        title: 'Редактировать новость',
		        width: 680,
		        height:500,
		        minWidth: 300,
		        minHeight: 200,
		        y:(navigator.userAgent.indexOf('Firefox')!=-1?(scrollY+110):(document.body.scrollTop+110)),
		        layout: 'fit',
		        plain:true,
		        bodyStyle:'padding:5px;',
		        buttonAlign:'center',
		        items: form,
		
		        buttons: [{
		            text: 'Сохранить',
		            handler  : function(){
		            		
		            		form.getForm().submit({
                      			url:'ajax/savetoid.php',
                      			waitMsg:'Новость обновляется...',
								waitTitle:'Сохранение',
								success :function(){
									window.hide();
 					  				store.reload();
								}
							});
		            
	            
		                      
		            }
		        },{
		            text: 'Отмена',
		            handler  : function(){
		                        window.hide();
		            }
		        }]
		    });
		    window.show();
		  				  	
	
			form.getForm().load({
                      	url:'ajax/getbyid.php',
                      	method: 'POST',
                      	params : 'id='+id,
						waitTitle:'Загрузка',
						waitMsg:'Загрузка новости'
					});
}


/**
 * Удаление новостей
 *
 */
 
function delnews(id) {
	Ext.MessageBox.confirm('Confirm', 'Вы действительно хотите удалить новость?', function (btn) {
		if (btn=='yes') $.post('ajax/delete.php', 'id='+id,
		 					  function(data){
		 					  		if (data=='yes') {
		 					  			store.reload();
		 					  		} else {
		  								alert(data);
		  							}
		 					  }, "text");
	});
}
